package com.tbit.uqbike.service.business;

import com.tbit.uqbike.object.pojo.dto.*;
import com.tbit.uqbike.object.pojo.vo.RideOrderRefundRpcReqVO;
import com.tbit.uqbike.object.value.LoginInfo;
import com.tbit.common.entity.view.Result;

import javax.validation.Valid;

/**
 * 退款操作
 *
 * @Author:BUGTian
 * @DATE: 2022/11/28
 */
public interface RefundService {

    /**
     * 骑行订单退款
     */
    int RIDE_ORDER = 1;
    /**
     * 骑行卡、会员卡、免押卡、优惠券套餐退款
     */
    int ORDER = 2;
    /**
     * 用户余额退款
     */
    int USER_MONEY = 3;
    /**
     * 押金退款
     */
    int DEPOSIT = 4;

    /**
     * 骑行订单退款
     */
    Result<Integer> rideOrderRefund(LoginInfo login, RideOrderRefundDTO refundDTO);

    /**
     * 骑行订单退款
     */
    Result<Integer> rideOrderRefund(@Valid  RideOrderRefundRpcReqVO reqVO);

    /**
     * 骑行卡、免押卡、会员卡、优惠券套餐退款
     */
    Result<Integer> orderRefund(LoginInfo login, OrderRefundDTO orderRefundDTO);

    /**
     * 用户余额退款
     */
    Result<RefundReturnDTO> userMoneyRefund(LoginInfo login, UserMoneyRefundDTO userMoneyRefundDTO);

    /**
     * 押金退款
     */
    Result<Integer> depositRefund(LoginInfo login, DepositRefundDTO depositRefundDTO);

    /**
     * @description: 查询退款结果
     * @author: mo.shanyong
     * @date: 2024/12/19 10:40
     * @param: refundBusinessNO 退款单号
     * @return: Result<com.tbit.uqbike.object.pojo.dto.RefundReturnDTO>
     */
    Result<RefundReturnDTO> queryRefundResult(String refundBusinessNO);
}
